package com.aps.common.model.genetic;


import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List;

/**
 * @author jsy
 * @description: 在APS排程系统中，订单是排产的基本单位。每个订单包含多个需要按顺序执行的工序，代表一个完整的生产任务。
 * @date 2025/9/11 20:00
 */
@Schema(description = "订单")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order {
    /**
     * 订单ID
     */
    private String id;
    /**
     * 订单数量
     */
    private int quantity;
    /**
     * 订单开始时间
     */
    private LocalDateTime startDate;
    /**
     * 订单交付日期
     */
    private LocalDateTime dueDate;
    /**
     * 订单工序列表
     */
    private List<OrderProcess> processList;

    /**
     * @description: 获取最后一道工序
     * @author: jsy
     * @time: 2025/9/29 14:44
     */
    public OrderProcess getLastProcess() {
        if (processList.isEmpty()) {
            return null;
        }
        return processList.stream()
                .max(Comparator.comparingInt(OrderProcess::getSequence))
                .orElse(null);
    }
}
